package com.gqj.meter.mapper;

import com.gqj.meter.domain.MdMeter;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 电能表Mapper接口
 *
 * @author lxq
 * @date lxq-02-10
 */
public interface MdMeterMapper {
    /**
     * 查询电能表
     *
     * @param meterId 电能表主键
     * @return 电能表
     */
    public MdMeter selectMdMeterByMeterId(Long meterId);

    /**
     * 查询电能表列表
     *
     * @param mdMeter 电能表
     * @return 电能表集合
     */
    public List<MdMeter> selectMdMeterList(MdMeter mdMeter);

    /**
     * 查询电能表数量
     *
     * @param mdMeter 电能表
     * @return 电能表集合
     */
    public int selectMdMeterCount(MdMeter mdMeter);

    /**
     * 新增电能表
     *
     * @param mdMeter 电能表
     * @return 结果
     */
    public int insertMdMeter(MdMeter mdMeter);

    /**
     * 新增电能表
     *
     * @param list 电能表
     * @return 结果
     */
    public int insertMdMeterBatch(List<MdMeter> list);

    /**
     * 修改电能表
     *
     * @param mdMeter 电能表
     * @return 结果
     */
    public int updateMdMeter(MdMeter mdMeter);

    /**
     * 删除电能表
     *
     * @param meterId 电能表主键
     * @return 结果
     */
    public int deleteMdMeterByMeterId(Long meterId);

    /**
     * 批量删除电能表
     *
     * @param meterIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteMdMeterByMeterIds(Long[] meterIds);

    /**
     * 校验资产编号是否唯一
     *
     * @param meterNo 资产编号
     * @return 结果
     */
    public MdMeter checkMeterNoUnique(@Param("meterNo") String meterNo);

    /**
     * 校验rfid编号/条形码是否唯一
     *
     * @param rfidNo 电能表
     * @return 结果
     */
    public MdMeter checkRfidNoUnique(@Param("rfidNo") String rfidNo);

    /**
     * 通过rfidNo查询电能表
     *
     * @param rfidNo 条形码
     * @return 电能表
     */
    public MdMeter selectMdMeterByRfidNo(String rfidNo);

    //查询资产统计信息
    public List<Map<String, Object>> getMaterialInfo(@Param("curStatusCode") String curStatusCode);

    //查询业务状态数量
    public Map<String, Object> getServiceStatusNum();

    /**
     * 获取条形码类别
     *
     * @param mdMeter 电能表
     * @return 电能表
     */
    public MdMeter getRfidNoCategory(MdMeter mdMeter);

    /**
     * 批量根据rfidCode查询电能表信息
     *
     * @param rfidNos rfidCode集合
     * @return 结果
     */
    public List<MdMeter> selectMdMeterByRfidBath(@Param("rfidNos")String[] rfidNos);
}
